package william.xor;

/**
 * @author ZhangShenao
 * @date 2024/1/19
 * @description
 */
public class 提取最右侧的1 {
    public static void main(String[] args) {
        int n = 100;
        System.out.println(n + " 的二进制表示为: " + Integer.toBinaryString(n));

        int result = extractRightFirstOne(n);
        System.out.println("提取最右侧的1,结果为: " + Integer.toBinaryString(result));
    }

    /**
     * 给定一个数字n,要求提取出它二进制形式中最右侧的1
     */
    public static int extractRightFirstOne(int n) {
        //等价于 n & (-n)
        return n & (~n + 1);
    }
}
